<?php

require_once 'classes/CompteToGroupe.php';
require_once 'SCinterface.php';
require_once 'classes/Message.php';
require_once '../config/config.php';

/**
 * Classe du service CRUD pour la gestion des compteToGroupes
 * 
 * @author Manixab Billy
 */

class SCcomptetogroupe {
    
    private $db;
    
    /**
     *Contructeur créant l'objet pour la connexion à la DB 
     */
    public function __construct() {
        $this->db = new PDO(ACA_DB_DSN, ACA_DB_USER, ACA_DB_PASS, array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''));
        $this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        
    }
    
    /**
     * Ajouter un compte a un groupe
     * @param type $unCompte un Compte
     * @param type $unGroupe un Groupe
     * @return Message
     */
    public function ajouter($unCompte, $unGroupe) {
        try {
            $query = $this->db->prepare("INSERT INTO comptetogroupe ".
                    "(compte_username, groupe_nom) VALUES(:compte_username, :groupe_nom)");
            $query->execute(array(
                'compte_username'       =>$unCompte->getUsername(),
                'groupe_nom'            =>$unGroupe->getNom()
            ));
            
            $query->closeCursor();
        }
        catch(PDOException $e) {
            return new Message("Compte non ajout au groupe: ".$e->getMessage());
        }
        return $unCompte;
    }
    
     /**
     * Modifier un compte d'un groupe
     * @param type $unCompte un Compte
     * @param type $unGroupe un Groupe
     * @return Message
     */
    public function modifier($unCompte, $unGroupe) {
       /* try {
            $query = "UPDATE comptetogroupe SET
                groupe_nom = '".$unGroupe."'
                    WHERE compte_username ='".$unCompte."';";
            $this->db->query($query);
            $message = new Message("Compte/Groupe modifié");

        }
        catch(PDOException $e) {
            print($e->getMessage());
            $message = new Message("Compte/Groupe non modifié: ".$e->getMessage());
        }
        return $message;*/
    }
    
     /**
     * Supprimer un compte a un groupe
     * @param type $unCompte un Compte
     * @param type $unGroupe un Groupe
     * @return Message
     */
    public function supprimer($unCompte, $unGroupe) {
        try {
            $query = "DELETE from comptetogroupe WHERE (compte_username = '".$unCompte."'
                AND groupe_nom = '".$unGroupe."');";
                
            $this->db->exec($query);
            $message = new Message("Compte/Groupe supprimé");
            
        }
        catch(PDOException $e) {
            $message = new Message("Compte/Groupe non supprimé: ".$e->getMessage());
        }
        return $message;
    }
    
     /**
     * @param unCompteToGroupe CompteToGroupe de recherche sous forme d'objet CompteToGroupe
     * @return un tableau d'objet CompteToGroupe
     */
    public function lister($unCompteToGroupe) {
        try {
            $query = "SELECT * FROM comptetogroupe ";
            
            if ($unCompteToGroupe!=NULL) {
                
                if (($unCompteToGroupe->getCompte_username() != NULL) || ($unCompteToGroupe->getGroupe_nom() != NULL)) {
                    $query_where = "WHERE";
                    
                    if ($unCompteToGroupe->getCompte_username() !=NULL) {
                        $query_where .= " compte_username = '".$unCompteToGroupe->getCompte_username()."'";
                        
                        if ($unCompteToGroupe->getGroupe_nom() != NULL ) {
                            $query_where .= " AND groupe_nom = '".$unCompteToGroupe->getGroupe_nom()."'";
                        }
                    }
                    else {
                        if ($unCompteToGroupe->getGroupe_nom() != NULL ) {
                            $query_where .= " groupe_nom = '".$unCompteToGroupe->getGroupe_nom()."'";
                        }
                    }
                   $query.=$query_where; 
                }
                 
            }
            
           

            $lesCompteToGroupeTrouves = null;
            $unCompteToGroupeLu = null;
            $result=$this->db->query($query);
            while($row=$result->fetch()) {
                $unCompteToGroupeLu = new CompteToGroupe($row["compte_username"], $row["groupe_nom"]);
                $lesCompteToGroupeTrouves[] = $unCompteToGroupeLu;
            }
            
        }
        catch(PDOException $e) {
            print($e->getMessage());
        }
        return $lesCompteToGroupeTrouves;
    }
}
?>
